"""
https://leetcode.cn/problems/maximum-gap/description/

164. 最大间距
中等
相关标签
相关企业
给定一个无序的数组 nums，返回 数组在排序之后，相邻元素之间最大的差值 。如果数组元素个数小于 2，则返回 0 。

您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。

 

示例 1:

输入: nums = [3,6,9,1]
输出: 3
解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。
示例 2:

输入: nums = [10]
输出: 0
解释: 数组元素个数小于 2，因此返回 0。
 

提示:

1 <= nums.length <= 105
0 <= nums[i] <= 109
"""

from typing import List


class Solution:
    def maximumGap(self, nums: List[int]) -> int:
        """
        考虑利用一个特性，即最大gap，必定大于等于平均gap，也就是(maxVal-minVal)/(len(num)-1)
        基于此，可设计桶排序，使每个桶大小均为avgGap（暂且不考虑小数问题和开闭问题），并将元素逐个放到每个桶中。
        每个桶维护一个最大值和一个最小值
        如果存在未存在值的桶，则仅需找到中间空桶数量最多的情况，之后遍历获取相邻最近两个桶的最值之差即可（这可能有很多个）
        """
        pass

if __name__=='__main__':
    pass